package controlador;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

import vista.VentanaListaObsequioModeloTabla;
import vista.VentanaSeleccionarListaRegalo;

import modelo.Evento;
import modelo.ListaObsequioDAO;
import modelo.Organizacion;
import modelo.Producto;
import modelo.ProductoDAO;
import modelo.Tienda;
import modelo.TiendaDAO;

public class ControladorVentanaListaObsequio implements ActionListener {
	private VentanaSeleccionarListaRegalo ventanaListaRegalo;
	private Organizacion organizacion;
	private Evento miEvento;
	
	private TiendaDAO tiendaDao;
	private ProductoDAO productoDao;
	private ListaObsequioDAO listaObsequioDao;
	private List<String> rift;
	private List<String> nomrift;
	
	private String nomtienda;
	private String riftienda;
	private String codEvento;
	
	public ControladorVentanaListaObsequio(Organizacion organizacion, Evento elEvento, String cod) {
		this.codEvento = cod;
		this.organizacion = organizacion;
		this.miEvento = elEvento;
		ventanaListaRegalo = new VentanaSeleccionarListaRegalo();
		ventanaListaRegalo.setLocationRelativeTo(null);
		ventanaListaRegalo.setVisible(true);
		ventanaListaRegalo.agregarListener(this);
		
		
		//ventanaListaRegalo.setTiendas(this.getTiendas());
		
		
		tiendaDao = new TiendaDAO();
		rift =  tiendaDao.nombreTiendas();
		ventanaListaRegalo.setTiendasComboBox(rift);
		
			
	//	ventanaListaRegalo.setProductos(this.getProductos());	

//		 nomtienda = ventanaListaRegalo.getCmbTienda().toString();
//		 tiendaDao = new TiendaDAO();
//		 riftienda = tiendaDao.rifTienda(nomtienda);
//
//		 productoDao = new ProductoDAO();
//		 nomrift = productoDao.productoPorTienda(riftienda);
//		 
//		 
//		 if (nomrift.size() > 0){ ventanaListaRegalo.mostrarMensaje("si hay producto por tienda"); }
//		 
//		 ventanaListaRegalo.setTiendasComboBox(nomrift);		
	
		 this.cargarListado();

	
	}
	
	
	
	private String[] getTiendas() {
		String[] tiendas = new String[organizacion.cantTiendas()];
		for (int i = 0; i < organizacion.cantTiendas(); i++) {
			tiendas[i] = organizacion.getUnaTienda(i).getRif()+"-"+organizacion.getUnaTienda(i).getNombre();
		}
		return tiendas;
	}

	private void cargarListado() {
		//if(this.miEvento.getListaobsequio().cantListaObsequios()>0){
		
		listaObsequioDao = new ListaObsequioDAO();
		int num = listaObsequioDao.numeroObsequiosPorEvento(codEvento);
		if (num > 0) {
			
			//ArrayList<Producto> listaObsequio = miEvento.getListaobsequio().getListaObsequios();
			
			ArrayList<String> productos;
			listaObsequioDao = new ListaObsequioDAO();
			productos = listaObsequioDao.codigoProducto(codEvento);
			
			if (productos != null) {ventanaListaRegalo.mostrarMensaje("si hay productos");}
			
			 productoDao = new ProductoDAO();
			List<Producto> listaObsequio = productoDao.productoMostrar(productos);
			
			
			ventanaListaRegalo.setListado(new VentanaListaObsequioModeloTabla(listaObsequio));
		
		
		}
		
	}
	
	private void agregarObsequioLista() {		
		
		if (ventanaListaRegalo.getCmbProducto().getItemCount() == 0) {
				
			ventanaListaRegalo.mostrarMensaje("No hay productos registrados en esta tienda");
			
		} else {
			
			
			nomtienda = ventanaListaRegalo.getTiendaCmb();
			 tiendaDao = new TiendaDAO();
			 riftienda = tiendaDao.rifTienda(nomtienda);

			 productoDao = new ProductoDAO();
			 
			 nomrift = productoDao.productoPorTienda(riftienda);
			 ventanaListaRegalo.setTiendasComboBox(nomrift);		

			 productoDao = new ProductoDAO();
			 String co = productoDao.codigoDelProducto(ventanaListaRegalo.getProductoCmb());
			 
		    listaObsequioDao = new ListaObsequioDAO();
			listaObsequioDao.registrarAnfitrion(codEvento, co);
			
		}
	}
	
	@Override
	public void actionPerformed(ActionEvent e) {
		if (e.getActionCommand().equalsIgnoreCase("Agregar")){ 
		
			agregarObsequioLista();
			this.cargarListado();
			
		} else if(e.getActionCommand().equalsIgnoreCase("Salir")){
			ventanaListaRegalo.dispose();
			
		} else {
			//ventanaListaRegalo.setProductos(this.getProductos());
		
			 nomtienda = ventanaListaRegalo.getTiendaCmb();
					 
			 tiendaDao = new TiendaDAO();
			  riftienda = tiendaDao.rifTienda(nomtienda);
	 
			 productoDao = new ProductoDAO();
			 nomrift = productoDao.productoPorTienda(riftienda);
			 
			 ventanaListaRegalo.setTiendasComboBoxProducto(nomrift);
			 
		}
		
	}

	private String[] getProductos() {
		String codigo;
		int cantProductos;
		StringTokenizer tok;
		tok = new StringTokenizer(ventanaListaRegalo.getCmbTienda().getSelectedItem().toString(),"-");
		codigo = tok.nextToken();
		Tienda unaTienda = organizacion.getUnaTienda(organizacion.buscarTienda(codigo));
		cantProductos = unaTienda.cantProductos();
		String[] productos = new String[cantProductos];
		for (int i = 0; i < cantProductos; i++) {
			productos[i] = unaTienda.getUnaProducto(i).getCodigo()+"-"+unaTienda.getUnaProducto(i).getNombre();
		}
		return productos;
	}

}
